perm filename HIDE3[900,BGB] blob sn#129599 filedate 1974-11-11 generic text, type T, neo UTF8
(SETQ IBASE (ADD1 7)) 


(DEFPROP ALLFNS 
 (NIL FIXVEC2
      TEST3
      TEST2
      BLOCK
      NTH
      CYMBAL
      MAPORCAR
      WINDOW-IN-OPPOSITE-HALF-PLANE?
      ANGLE
      PI
      ZUM
      D
      SETUP
      RE
      ARD
      TEST1
      PERSPECT
      PAN
      TILT
      ZOOM
      XEROX
      YOYO
      ZEBRA
      SAFE
      PLOTTER
      IVP
      VIP) 
VALUE)

(DEFPROP FIXVEC2 
 (LAMBDA(V)
  (CONS (CONS (FIX (TIMES FACTOR (CAAR V))) (FIX (TIMES FACTOR (CDAR V))))
	(CONS (FIX (TIMES FACTOR (CADR V))) (FIX (TIMES FACTOR (CDDR V)))))) 
EXPR)

(DEFPROP TEST3 
 (LAMBDA NIL (TEST2 (APPEND BL1 BL2 BL3))) 
EXPR)

(DEFPROP TEST2 
 (LAMBDA(ZILCH)
  (PROG NIL
	(MAPC (FUNCTION (LAMBDA (ZAP) (MAPC (FUNCTION PERSPECT) (GET ZAP (QUOTE CORNERS))))) ZILCH)
	(MAPC (FUNCTION (LAMBDA (ZAP) (HIDDEN-LINE VIEWNAME (LIST ZAP)))) ZILCH)
	(CLEAR)
	(MAPC (FUNCTION III) ZILCH))) 
EXPR)

(DEFPROP BLOCK 
 (LAMBDA(X Y Z)
  (PROG (V F E)
	(SETQ V (CYMBAL 10))
	(SETQ F (CYMBAL 6))
	(SETQ E (CYMBAL 14))
	(SET (NTH 1 V) (LIST X Y (MINUS Z)))
	(SET (NTH 2 V) (LIST X Y Z))
	(SET (NTH 3 V) (LIST X (MINUS Y) Z))
	(SET (NTH 4 V) (LIST X (MINUS Y) (MINUS Z)))
	(SET (NTH 5 V) (LIST (MINUS X) Y (MINUS Z)))
	(SET (NTH 6 V) (LIST (MINUS X) Y Z))
	(SET (NTH 7 V) (LIST (MINUS X) (MINUS Y) Z))
	(SET (NTH 10 V) (LIST (MINUS X) (MINUS Y) (MINUS Z)))
	(PUTPROP (NTH 1 E) (CONS (NTH 3 V) (NTH 4 V)) (QUOTE POINTS))
	(PUTPROP (NTH 2 E) (CONS (NTH 3 V) (NTH 2 V)) (QUOTE POINTS))
	(PUTPROP (NTH 3 E) (CONS (NTH 1 V) (NTH 2 V)) (QUOTE POINTS))
	(PUTPROP (NTH 4 E) (CONS (NTH 1 V) (NTH 4 V)) (QUOTE POINTS))
	(PUTPROP (NTH 5 E) (CONS (NTH 4 V) (NTH 10 V)) (QUOTE POINTS))
	(PUTPROP (NTH 6 E) (CONS (NTH 3 V) (NTH 7 V)) (QUOTE POINTS))
	(PUTPROP (NTH 7 E) (CONS (NTH 2 V) (NTH 6 V)) (QUOTE POINTS))
	(PUTPROP (NTH 10 E) (CONS (NTH 1 V) (NTH 5 V)) (QUOTE POINTS))
	(PUTPROP (NTH 11 E) (CONS (NTH 5 V) (NTH 10 V)) (QUOTE POINTS))
	(PUTPROP (NTH 12 E) (CONS (NTH 7 V) (NTH 10 V)) (QUOTE POINTS))
	(PUTPROP (NTH 13 E) (CONS (NTH 6 V) (NTH 7 V)) (QUOTE POINTS))
	(PUTPROP (NTH 14 E) (CONS (NTH 5 V) (NTH 6 V)) (QUOTE POINTS))
	(PUTPROP (NTH 1 F) (LIST (NTH 5 V) (NTH 6 V) (NTH 7 V) (NTH 10 V)) (QUOTE CORNERS))
	(PUTPROP (NTH 2 F) (LIST (NTH 3 V) (NTH 4 V) (NTH 10 V) (NTH 7 V)) (QUOTE CORNERS))
	(PUTPROP (NTH 3 F) (LIST (NTH 1 V) (NTH 2 V) (NTH 3 V) (NTH 4 V)) (QUOTE CORNERS))
	(PUTPROP (NTH 4 F) (LIST (NTH 1 V) (NTH 4 V) (NTH 10 V) (NTH 5 V)) (QUOTE CORNERS))
	(PUTPROP (NTH 5 F) (LIST (NTH 1 V) (NTH 2 V) (NTH 6 V) (NTH 5 V)) (QUOTE CORNERS))
	(PUTPROP (NTH 6 F) (LIST (NTH 2 V) (NTH 3 V) (NTH 7 V) (NTH 6 V)) (QUOTE CORNERS))
	(PUTPROP (NTH 1 F) (LIST (NTH 11 E) (NTH 12 E) (NTH 13 E) (NTH 14 E)) (QUOTE EDGES))
	(PUTPROP (NTH 2 F) (LIST (NTH 1 E) (NTH 5 E) (NTH 12 E) (NTH 6 E)) (QUOTE EDGES))
	(PUTPROP (NTH 3 F) (LIST (NTH 1 E) (NTH 2 E) (NTH 3 E) (NTH 4 E)) (QUOTE EDGES))
	(PUTPROP (NTH 4 F) (LIST (NTH 4 E) (NTH 5 E) (NTH 11 E) (NTH 10 E)) (QUOTE EDGES))
	(PUTPROP (NTH 5 F) (LIST (NTH 3 E) (NTH 10 E) (NTH 14 E) (NTH 7 E)) (QUOTE EDGES))
	(PUTPROP (NTH 6 F) (LIST (NTH 2 E) (NTH 6 E) (NTH 13 E) (NTH 7 E)) (QUOTE EDGES))
	(RETURN F))) 
EXPR)

(DEFPROP NTH 
 (LAMBDA (N L) (COND ((EQ 1 N) (CAR L)) (T (NTH (SUB1 N) (CDR L))))) 
EXPR)

(DEFPROP CYMBAL 
 (LAMBDA (N) (COND ((ZEROP N) NIL) (T (CONS (INTERN (GENSYM)) (CYMBAL (SUB1 N)))))) 
EXPR)

(DEFPROP MAPORCAR 
 (LAMBDA (FN L) (COND ((NULL L) NIL) ((FN (CAR L)) T) (T (MAPORCAR FN (CDR L))))) 
EXPR)

(DEFPROP WINDOW-IN-OPPOSITE-HALF-PLANE? 
 (LAMBDA(EDGE)
  (PROG (SIGN EDG X Y)
	(SETQ X (GET EDGE (QUOTE ENDS)))
	(SETQ EDG (LIST (LIST (CAAR X) (CDAR X)) (LIST (CADR X) (CDDR X))))
	(SETQ X
	      (DELETE (CAR (GET EDGE (QUOTE POINTS)))
		      (DELETE (CDR (GET EDGE (QUOTE POINTS))) (GET POLYGON (QUOTE CORNERS)))))
	(SETQ X (GET (CAR X) (QUOTE IMAGE)))
	(SETQ Y (CADR X))
	(SETQ X (CAR X))
	(SETQ SIGN (MMMM X Y EDG))
	(RETURN
	 (AND (MINUSP (TIMES SIGN (MMMM XLOW YLOW EDG)))
	      (MINUSP (TIMES SIGN (MMMM XLOW YHIGH EDG)))
	      (MINUSP (TIMES SIGN (MMMM XHIGH YLOW EDG)))
	      (MINUSP (TIMES SIGN (MMMM XHIGH YHIGH EDG))))))) 
EXPR)

(DEFPROP ANGLE 
 (LAMBDA NIL (QUOTIENT (TIMES 360.0 (ARCTAN (QUOTIENT ZOOM (TIMES 2.0 D)))) PI)) 
EXPR)

(DEFPROP PI 
 (NIL . 3.1415925) 
VALUE)

(DEFPROP ZUM 
 (NIL . 0.5) 
VALUE)

(DEFPROP D 
 (NIL . 1400) 
VALUE)

(DEFPROP SETUP 
 (LAMBDA NIL
  (PROG NIL
	(DATA)
	(MAPC (FUNCTION VIP) (APPEND (GET (QUOTE RR1) (QUOTE CORNERS)) (GET (QUOTE RR2) (QUOTE CORNERS)))))) 
EXPR)

(DEFPROP RE 
 (LAMBDA NIL (ARD VIEWNAME)) 
EXPR)

(DEFPROP ARD 
 (LAMBDA(VV)
  (PROG NIL (SETQ VIEWNAME VV) (LINELENGTH 37777) (ARDS (QUOTE RR1)) (ARDS (QUOTE RR2)) (LINELENGTH 105))) 
EXPR)

(DEFPROP TEST1 
 (LAMBDA NIL
  (PROG NIL
	(MAPC (FUNCTION PERSPECT) (APPEND (GET (QUOTE RR1) (QUOTE CORNERS)) (GET (QUOTE RR2) (QUOTE CORNERS))))
	(HIDDEN-LINE VIEWNAME (QUOTE (RR1)))
	(HIDDEN-LINE VIEWNAME (QUOTE (RR2)))
	(LINELENGTH 37777)
	(CLEAR)
	(III (QUOTE RR1))
	(III (QUOTE RR2))
	(LINELENGTH 105))) 
EXPR)

(DEFPROP PERSPECT 
 (LAMBDA(POINT)
  (PROG (XX XXX YY YYY YYYY ZZ ZZZ)
	(SETQ ZZ (EVAL POINT))
	(SETQ XX (CAR ZZ))
	(SETQ YY (CADR ZZ))
	(SETQ ZZ (CADDR ZZ))
	(SETQ XX (DIFFERENCE XX XEROX))
	(SETQ YY (DIFFERENCE YY YOYO))
	(SETQ ZZ (DIFFERENCE ZZ ZEBRA))
	(SETQ XXX (PLUS (TIMES XX (COSINE PAN)) (TIMES YY (SINE PAN))))
	(SETQ YYY (DIFFERENCE (TIMES YY (COSINE PAN)) (TIMES XX (SINE PAN))))
	(SETQ YYYY (PLUS (TIMES YYY (COSINE TILT)) (TIMES ZZ (SINE TILT))))
	(SETQ ZZZ (DIFFERENCE (TIMES ZZ (COSINE TILT)) (TIMES YYY (SINE TILT))))
	(PUTPROP POINT
		 (LIST (QUOTIENT (TIMES D ZUM XXX) (DIFFERENCE D ZZZ))
		       (QUOTIENT (TIMES D ZUM YYYY) (DIFFERENCE D ZZZ))
 		       ZZZ)
		 (QUOTE IMAGE)))) 
EXPR)

(DEFPROP PAN 
 (NIL . 0.0) 
VALUE)

(DEFPROP TILT 
 (NIL . 3.1415925) 
VALUE)

(DEFPROP ZOOM 
 (NIL . 4000) 
VALUE)

(DEFPROP XEROX 
 (NIL . -2000) 
VALUE)

(DEFPROP YOYO 
 (NIL . -2000) 
VALUE)

(DEFPROP ZEBRA 
 (NIL . -2000) 
VALUE)

(DEFPROP SAFE 
 (LAMBDA NIL (DSKOUT HIDE3 (GRINL ALLFNS))) 
EXPR)

(DEFPROP PLOTTER 
 (LAMBDA NIL
  (PROG NIL
	(OUTPUT PTP:)
	(OUTC T T)
	(LINELENGTH 37777)
	(MAPC (FUNCTION PLOT) (APPEND BL1 BL2 BL3))
	(OUTC NIL T))) 
EXPR)

(DEFPROP IVP 
 (LAMBDA (Z) (PUTPROP Z (GET Z (QUOTE VALUE)) (QUOTE IMAGE))) 
EXPR)

(DEFPROP VIP 
 (LAMBDA (Z) (SET Z (GET Z (QUOTE IMAGE)))) 
EXPR)